A router is a network device that connects a host computer on a first network to a computer on a second, similar type network. Previously, routers on Internet Protocol (IP) networks had static physical addresses, and the host would send data packets to the static addresses of the router to be forwarded to the destination network. It was inconvenient when routers failed, because the host would either have to be re-programmed to send data to a different router, or a new router would have to be programmed to have the same static address of the old router. Doing either of these tasks was relatively time consuming and, until complete, the host could not communicate with the desired second network, thus interrupting data traffic between the host and the second network.
Virtual routing was developed to ameliorate the above problem. In virtual routing, two or more physical routers provide support for a single “virtual” router address. One physical router is deemed the master, and has primary responsibility for routing data sent to a virtual router address. If for some reason the master router should fail, a slave, which is a second physical router, automatically takes over responsibility for routing the data sent to the virtual router address.
For example, in FIG. 1 a host computer is assigned IP address 10.10.10.1 and is located on a local subnet 10.10.10.0/24. If the host computer desires to communicate with a computer not on the local subnet, it must send data packets through a router. In FIG. 1, a virtual router is assigned the IP address 10.10.10.2. A router 1 is the master for the virtual router, and has a physical address of 10.10.10.3. A router 2 is the slave for the virtual router and has the physical address 10.10.10.4. In normal operation, router 1 performs the actual data routing for the virtual router by routing data sent by the host to the virtual router address 10.10.10.2. If, for some reason router 1 becomes inoperative, router 2 automatically takes over the routing responsibilities of the virtual router from the disabled router 1. When the slave is active, it routes the data sent by the host to the virtual address 10.10.10.2. Note that even when different physical routers handled the routing functions, the host still sent data to 10.10.10.2, and did not have to be modified when the primary router went down. A protocol, Virtual Router Redundancy Protocol (VRRP), is responsible for ensuring that the master/slave relation and switchovers occur without problem.
Although the VRRP switching is a relatively robust technology, it creates another problem in network communications. Specifically, although the host computer can send data through a virtual router using the virtual address, it cannot send data or commands to the virtual router address directly. Instead, to send data or commands to the router presently posing as the virtual router, the host must know the physical address of the router currently acting as the virtual router. Thus, with reference to FIG. 1, the host could send a ping or some other command to either of the physical routers 10.10.10.3 or 10.10.10.4, but any command sent directly to the virtual address of 10.10.10.2 simply goes unanswered.
This is a serious limitation for a network manager or architect who oftentimes needs to verify that the hardware on the computer network is working properly. Typically, a network troubleshooter would send ping or traceroute commands to test and verify that the network hardware is correctly operating. However, in present virtual routing systems, receiving useful information in response to such commands sent to a virtual router is presently not possible.
The present invention addresses these and other problems associated with the prior art.